package com.sourcetrip.binarytree;


import com.sourcetrip.raw.adt.MyAVLTree;
import com.sourcetrip.utils.printer.BinaryTrees;

/**
 * @author: ZhouBert
 * @date: 2020/12/2
 * @description: AVL-Tree 测试
 * 其实从 AVL-Tree 开始才是真正的加大难度！所以必须越是用心！
 */
public class MyAVLTreeTest01 {


	public static void main(String[] args) {
		testAdd();


	}

	/**
	 * 测试添加，对照以下网址：
	 * http://520it.com/binarytrees/
	 * 测试通过
	 * ┌───────19───────┐
	 * │                │
	 * ┌─3─┐         ┌────70───┐
	 * │   │         │         │
	 * ┌─2 ┌─11─┐   ┌─44─┐     ┌─95─┐
	 * │   │    │   │    │     │    │
	 * 1 ┌─7    14 21  ┌─57─┐ 85─┐  99
	 * │             │    │    │
	 * 4            56    58   93
	 */
	static void testAdd() {
		Integer data[] = new Integer[]{
				67, 52, 92, 96, 53, 95, 13, 63, 34, 82, 76, 54, 9, 68, 39
		};
		data = new Integer[]{
				85, 19, 3, 7, 99, 95, 2, 1, 70, 44, 58, 11, 21, 14, 93, 57, 4, 56
		};

		MyAVLTree<Integer> avl = new MyAVLTree<>();
		for (int i = 0; i < data.length; i++) {
			avl.add(data[i]);
//			System.out.println("【" + data[i] + "】");
//			BinaryTrees.println(avl);
//			System.out.println("---------------------------------------");
		}

		BinaryTrees.println(avl);

		//此时 删除成功！
		for (int i = 0; i < data.length; i++) {
			avl.remove(data[i]);
			System.out.println("delete:【" + data[i] + "】");
			BinaryTrees.println(avl);
			System.out.println("---------------------------------------");
			avl.toString();
		}
	}
}
